package cn.wolfcode.cloud.productapi.service;


import cn.wolfcode.cloud.productapi.domian.Product;
import cn.wolfcode.cloud.productapi.service.feigh.ProductFeignHystrix;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Spring Cloud应用在启动时，Feign会扫描标有@FeignClient注解的接口，生成代理，
 * 并注册到Spring容器中。生成代理时Feign会为每个接口方法创建一个RequetTemplate对象，
 * 该对象封装了HTTP请求需要的全部信息，请求参数名、请求方法等信息都是在这个过程中确定的，
 * Feign的模板化就体现在这里。
 */
@FeignClient(name = "product-server",fallback = ProductFeignHystrix.class)
public interface ProductFeignApi {

    @RequestMapping("/product/find")
    Product getProduct(@RequestParam("id") Long productId);

}
